package com.demo.wy;

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;

import java.util.Calendar;
import java.util.HashMap;

/**
 * JWT令牌创建示例类
 * 演示了如何创建一个基本的JWT令牌，包括：
 * 1. 设置Header（可选）
 * 2. 添加自定义声明（Payload）
 * 3. 设置过期时间
 * 4. 使用密钥进行签名
 */
public class Run {
    public static void main(String[] args) {
        // 创建一个空的Header Map（可选）
        HashMap<String,Object> map = new HashMap<>();

        // 设置令牌过期时间为20秒后
        Calendar instance = Calendar.getInstance();
        instance.add(Calendar.SECOND,20);

        // 创建JWT令牌
        String token = JWT.create()
                .withHeader(map) // 设置Header（可选，使用默认值）
                .withClaim("userId",20) // 添加自定义声明：用户ID
                .withClaim("username","zhangsan") // 添加自定义声明：用户名
                .withExpiresAt(instance.getTime()) // 设置过期时间
                .sign(Algorithm.HMAC256("fdahuifeuw78921")); // 使用HMAC256算法和密钥进行签名

        // 输出生成的JWT令牌
        System.out.println(token);
    }
}
